perm filename WRIFUN.OLD[MUS,LCS] blob sn#089372 filedate 1974-03-01 generic text, type T, neo UTF8
00100		SUBROUTINE WRIFUN
00200		COMMON/RD/ A(50,4),B(2,10),FN(10),XA(10),AA(4,178,10)
00300		1,LX,JX,J,IDEL,FNUM,FNUM1,Z,FLNM,FLNM1,KT
00400		COMMON FUNC(512),F2(512),K,I
00500		DATA ARY/'ARRAY'/,R999/999.0/
00600	24	FORMAT(' TYPE FUNCTION NAME   '$)
00800	34	FORMAT(A5,'(',A5,');',A5)
00900	35	FORMAT(1XA5,'IN FILE "',A5,'.DAT"'/)
01000	37	FORMAT(8F10.4)
01100	39	FORMAT(A5,10(A1,A3))
01200	390	FORMAT(A1)
01300	43	FORMAT(' NO ROOM IN FILE  "',A5,'.DAT"')
01400	44	FORMAT(' FUNCTIONS ALREADY IN FILE - ',A5)
01500	45	FORMAT('(512);')
01600	
01650		MX=0
01700		IF(IDEL.NE.0)GO TO 292
01800	C  FOR DELETIONS
01900		IF(Z.EQ.'N')GO TO 912
02000		IF(FLNM.EQ.FLNM1)GO TO 1922
02100	C  JUMP IF THAT FILE IS NOW IN CORE
02200	CC	REWIND 1
02300	CC	CALL IFILE(1,FLNM)
02400	CC	READ(1,39),X,B
02450		CALL READ1
02500	1922	TYPE 44,FLNM
02600	C  FUNCS. IN FILE
02700		TYPE 39,MX,B
02800	912	TYPE 24
02900		ACCEPT 390,FNUM
02905		IF(FNUM.EQ.'B')RETURN
02907	C  FOR BACKUP
02910		IF(FNUM.EQ.' ')GO TO 1922
02912		REREAD 39,FNUM
02915		IF(Z.EQ.'N')GO TO 911
02920		IF(Z.NE.-1)GO TO 90
02930	C JUMP IF .NE. 'RENAME'
02940		B(2,JX)=FNUM
02950		FN(JX)=FNUM
02955		LX=LX-1
02960	CC	MX=127
02970		GO TO 1906
03000	90	IF(FLNM.EQ.FLNM1)GO TO 1090
03100		FNUM1=0
03200		LX=0
03400	C  TO PUT NEW FUNC IN OLD FILE
03500		CALL READER
03600	1090	JX=0
03700		MX=LX
03800		DO 20 K=1,LX-1
03900		IF(FNUM.NE.FN(K))GO TO 20
04000		JX=K
04100		LX=LX-1
04200		GO TO 21
04300	20	CONTINUE
04400	210	JX=LX
04500	C  JX=LX IF FNUM WAS NOT FOUND
04600		IF(JX.GT.10)GO TO 193
04700	21	FN(JX)=FNUM
04800		X='SEG'
04900		IF(J.EQ.4)X='SYNTH'
05000		XA(JX)=X
05100		CALL STORE(JX)
05500		IF(J.EQ.2)GO TO 1192
05600		AA(1,KT,JX)=999
05700		GO TO 192
05800	1192	IF(A(KT-1,2).EQ.100)GO TO 192
05900	C  JUMP IF NO SMOOTHING
06100		DO 2192 K=1,512
06200	2192	AA(K,KT,JX)=FUNC(K)
06500	
06900	192	IF(JX.NE.1)B(1,JX)=','
07000		B(2,JX)=FNUM
07100		GO TO 1906
09500	193	TYPE 43,FLNM
09600	C  NO ROOM IN FILE.
09800		RETURN
10400	911	LX=1
10500		DO 94 K=1,20
10700	94	B(K,1)=' '
10850		GO TO 210
10900	C  CLEARS B FOR NEW, SINGLE ITEM.
12130	292	IF(IDEL.EQ.10)GO TO 932
12141		DO 931 K=IDEL,LX-1
12152	CC	FN(K)=FN(K+1)
12163	931	B(2,K)=B(2,K+1)
12174	932	B(1,LX)=' '
12185		B(2,LX)=' '
12200	1906	REWIND 1
12300		CALL OFILE(1,FLNM)
12400		WRITE(1,39),ARY,B
12500		WRITE(1,45)
13100	69	NX=0
13200	1905	IF(NX.EQ.LX)GO TO 904
13250	C  LX=TOTAL # OF FUNCS
13300		NX=NX+1
13400		IF(IDEL.EQ.NX)GO TO 1905
13431	C  SO THAT DATA MUST ALWAYS BE READ FROM DSK AFTER A DEL.
13450	CC1	YA(NX)=' '
13460	CC	IF(XA(NX).EQ.'SYNTH')YA(NX)='   99'
13500	CC	WRITE(1,34),XA(NX),FN(NX),YA(NX)
13600	1	J=4
13610		X='   99'
13620		IF(XA(NX).NE.'SEG')GO TO 68
13630		J=2
13640		X=' '
13650	68	WRITE(1,34),XA(NX),FN(NX),X
13800		JX=0
13900	2905	JX=JX+1
14000		IF(J.EQ.2)GO TO 3905
14100		IF(AA(1,JX,NX).EQ.999)GO TO 5905
14200	C  FOUND END OF A SYNTH
14300		WRITE(1,37),(AA(K,JX,NX),K=1,4)
14400		GO TO 2905
14500	5905	WRITE(1,37)R999
14600		GO TO 1905
14650	3905	X=AA(2,JX,NX)
14700		WRITE(1,37),AA(1,JX,NX),X
14800		IF(X.EQ.100)GO TO 1905
14900	C  FOUND END OF A SEG
15000		IF(X.LT.100)GO TO 2905
15350		WRITE(1,37)(AA(K,JX+1,NX),K=1,512)
15400		GO TO 1905
16000	904	IF(IDEL.EQ.0)TYPE 35,FNUM,FLNM
16035		IF(IDEL.NE.0)FLNM=0
16050		LX=LX+1
16075	C  FOR RESTARTS
16175		CALL EXIT
16700		END
16710	
16800		SUBROUTINE READER
16900		COMMON/LN/LINE
17000		COMMON/RD/ A(50,4),B(2,10),FN(10),XA(10),AA(4,178,10)
17100		1,LX,JX,J,IDEL,FNUM,FNUM1,Z,FLNM,FLNM1,KT
17200		COMMON FUNC(512),F2(512),K,I
17300	37	FORMAT(8F)
17400	38	FORMAT(3(A5,A1))
17500	380	FORMAT(I,3(A5,A1))
17600	39	FORMAT(9A5)
17700		READ (1,39),K,K,AK
17800	C  READS "(512);"
17900	C  LX IS MAIN COUNTER
18000	401	LX=LX+1
18100	1	IF(LINE.EQ.0)READ(1,38,END=4401)XA(LX),Y,FN(LX),H,H
18200		IF(LINE)READ(1,380,END=4401)K,XA(LX),Y,FN(LX),H,H
18300		IF(XA(LX).GE.0)GO TO 1
18400	C  TO FIND EOF AFTER COPY SCREWUPS
18500		IF(FNUM1.EQ.FN(LX))JX=LX
18600	C  JX TELLS WHERE TO FIND FUNCTION TO BE LOOKED AT.
18700	C  XA(LX) IS FUNC. TYPE (SEG OR SYNTH)
18800		X=0
18900		N=4
19000		IF(XA(LX).EQ.'SEG')N=2
19100		KX=0
19200	C  KX IS LOCAL COUNTER
19300	1401	IF(X.EQ.100)GO TO 401
19400		KX=KX+1
19500		IF(LINE.EQ.0)READ(1,37),(AA(K,KX,LX),K=1,N)
19600		IF(LINE)READ(1,37)AK,(AA(K,KX,LX),K=1,N)
19700		IF(N.EQ.2)GO TO 2401
19800		IF(AA(1,KX,LX).EQ.999)GO TO 401
19900	C  FOUND END OF A SYNTH
20000		GO TO 1401
20100	2401	X=AA(2,KX,LX)
20200		IF(X.LE.100)GO TO 1401
20300	C  NEXT IS FOR SMOOTHED SEGS
20500		N=KX+1
20505		IF(LINE)GO TO 2
20600		READ(1,37)(AA(K,N,LX),K=1,512)
20700		GO TO 401
20710	370	FORMAT(9F)
20800	2	DO 3 K=1,512,8
20833	3	READ(1,370)AK,(AA(KX,N,LX),KX=K,K+7)
20866		GO TO 401
20900	4401	RETURN
21000		END
21100	
21200	
21300		SUBROUTINE READ1
21400	C  READS FIRST LINE OF FILE ONLY
21500		COMMON/LN/LINE
21600		COMMON/RD/ A(50,4),B(2,10),FN(10),XA(10),AA(4,178,10)
21700		1,LX,JX,JT,IDEL,FNUM,FNUM1,Z,FLNM,FLNM1,KT
21800	2151	REWIND 1
21900		CALL IFILE(1,FLNM)
22000		READ (1,39),X,B
22100		LINE=0
22200		IF(X)RETURN
22300		LINE=-1
22400	C  FOUND LN #S (CAN'T READ SMOOTHS 'THO)
22500		REREAD 390,LX,X,B
22600		RETURN
22700	39	FORMAT(A5,10(A1,A3))
22800	390	FORMAT(I,A5,10(A1,A3))
22900		END
23000	
23100		SUBROUTINE STORE(N)
23200		COMMON/RD/ A(50,4),B(2,10),FN(10),XA(10),AA(4,178,10)
23300		1,LX,JX,J,IDEL,FNUM,FNUM1,Z,FLNM,FLNM1,KT
25000		DO 3090 K=1,KT-1
25100		DO 3090 L=1,J
25200	3090	AA(L,K,N)=A(K,L)
25300		RETURN
25400		END